﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Algorithm.Middle_649_PredictPartyVictory
{
    class MainProject
    {
        static void Main(string[] args)
        {
            Console.WriteLine(PredictPartyVictory("RDD"));
            Console.ReadKey();
        }

        public static string PredictPartyVictory(string senate)
        {

            #region 模拟+队列
            //Queue<char> que = new Queue<char>();
            //List<char> cache = new List<char>();
            //string str = senate;
            //char c = '0';
            //while (true)
            //{
            //    foreach (var item in str)
            //    {
            //        if (que.Count > 0)
            //        {
            //            char p = que.Peek();
            //            if (p == item)
            //            {
            //                que.Enqueue(item);
            //            }
            //            else cache.Add(que.Dequeue());
            //        }
            //        else que.Enqueue(item);
            //    }

            //    if (cache.Count > 0)
            //    {
            //        str = string.Empty;
            //        foreach (var item in que) str += item;
            //        foreach (var item in cache) str += item;
            //        que.Clear();
            //        cache.Clear();
            //    }
            //    else
            //    {
            //        bool isSame = true;
            //        if (que.Count > 0) c = que.Peek();
            //        else c = senate[0];
            //        foreach (var item in que)
            //        {
            //            if (c != item)
            //            {
            //                isSame = false;
            //                break;
            //            }
            //        }
            //        if (isSame) break;
            //    }
            //}

            //return c == 'R' ? "Radiant" : "Dire";
            #endregion

            #region 贪心+循环队列

            int n = senate.Length;

            Queue<int> r = new Queue<int>();
            Queue<int> d = new Queue<int>();
            for (int i = 0; i < senate.Length; i++)
            {
                if (senate[i] == 'R') r.Enqueue(i);
                else d.Enqueue(i);
            }

            while (!(r.Count == 0 || d.Count == 0))
            {
                int rIndex = r.Dequeue();
                int dIndex = d.Dequeue();

                if (rIndex < dIndex) r.Enqueue(rIndex + n);
                else d.Enqueue(dIndex + n);
            }
            return r.Count == 0 ? "Dire" : "Radiant";

            #endregion
        }
    }
}
